package com.oa.service;

import com.oa.back.ResponseBack;
import com.oa.common.base.Page;
import com.oa.common.base.Pageable;
import com.oa.common.vo.DepartmentVo;
import com.oa.entities.Department;

import java.util.List;

/**
 * 部门服务层
 *
 */
public interface DepartmentService extends UndeleteService<Long,Department> {

    /**
     * 查询顶级的部门
     *
     * @return
     */
    List<Department> findParent();

    /**
     * 提交部门的接口
     *
     * @param params
     * 需要传递的参数
     *
     * @see com.oa.common.dto.DepartmentDto
     * @return
     */
    ResponseBack<String> submit(String params);

    /**
     * 更新部门的数据
     *
     * @param params
     * 传递的参数
     *
     * @see com.oa.common.dto.DepartmentDto
     * @return
     */
    ResponseBack<String> update(String params);

    /**
     * 校验部门是否存在
     *
     * @param name
     * 部门的名称
     *
     * @param id
     * 部门的id
     *
     * @return
     */
    Boolean validate(String name,Long id);

    /**
     * 删除部门
     *
     * @param id
     * @return
     */
    ResponseBack<String> deleteDepartment(Long id);

    ResponseBack<List<DepartmentVo>> queryAll();

    /**
     * 根据关键字分页查询部门
     *
     * @param pageable
     * 分页组件
     * @param key
     * 关键字
     *
     * @return
     */
    Page<Department> findPage(Pageable pageable,String key);
}
